#!/bin/sh
#
# Check for zombie jobs (not terminated).
# Also scan logs for ERROR messages
#

# shellcheck source=../environment.in
. ./environment

# check_for_zombie_jobs storage=STORAGE [client=localhost-fd]

if [ $# = 2 ] ; then
    client="$2"
else
    client="client"
fi

"${SUSAN_BCONSOLE_BINARY}" -c "${conf}" <<END_OF_DATA >/dev/null 2>&1
@output "${tmp}"/dir.out
status dir
@output "${tmp}"/fd.out
status ${client}
@output "${tmp}"/sd.out
status $1
@output
quit
END_OF_DATA

export zstat
if ! grep "No Jobs running." "${tmp}"/dir.out >/dev/null 2>&1
then
  echo " "
  echo "  !!!! Zombie Jobs in Director !!!!"
  echo "  !!!! Zombie Jobs in Director !!!!" >>test.out
  cat "${tmp}"/dir.out
  echo " "
  zstat=1
  exit 1
fi
if ! grep "No Jobs running." "${tmp}"/fd.out >/dev/null 2>&1;
then
  echo " "
  echo "  !!!! Zombie Jobs in File daemon !!!!"
  echo "  !!!! Zombie Jobs in File daemon !!!!" >>test.out
  cat "${tmp}"/fd.out
  echo " "
  zstat=1
  exit 1
fi
if ! grep "No Jobs running." "${tmp}"/sd.out >/dev/null 2>&1
then
  echo " "
  echo "  !!!! Zombie Jobs in Storage daemon !!!!"
  echo "  !!!! Zombie Jobs in Storage daemon !!!!" >>test.out
  cat "${tmp}"/sd.out
  echo " "
  zstat=1
  exit 1
fi

if ls "${tmp}"/log*.out >/dev/null 2>&1; then

    if grep "ERROR" "${tmp}"/log*.out >/dev/null 2>&1; then
        echo " "
        echo "  !!!! ERROR in log output !!!!"
        echo "  !!!! ERROR in log output !!!!" >>test.out
        grep "ERROR" "${tmp}"/log*.out
        echo " "
        zstat=1
        exit 1
    fi

    if grep "Fatal Error" "${tmp}"/log*.out >/dev/null 2>&1; then
        echo " "
        echo "  !!!! Fatal Error in log output !!!!"
        echo "  !!!! Fatal Error in log output !!!!" >>test.out
        grep "Fatal Error" "${tmp}"/log*.out
        echo " "
        zstat=1
        exit 1
    fi

    if grep "glibc detected" "${tmp}"/log*.out >/dev/null 2>&1; then
        echo " "
        echo "  !!!! glibc detected Error in log output !!!!"
        echo "  !!!! glibc detected Error in log output !!!!" >>test.out
        grep "glibc detected" "${tmp}"/log*.out
        echo " "
        zstat=1
        exit 1
    fi

fi
